/**
 * @param {number[]} nums
 * @return {number}
 */
var findUnsortedSubarray = function (nums) {
  let n = nums.length
  let left = 0, right = -1
  let min = Infinity, max = -Infinity

  //从左往右遍历：找到右边界
  for (let i = 0; i < n; i++) {
    //找到->方向上最后一个小于左侧最大值的元素
    if (nums[i] < max) {
      right = i
    } else {//当前元素大于最大值，更新最大值
      max = nums[i]
    }
  }

  //从右往左遍历：找到左边界
  for (let i = n - 1; i >= 0; i--) {
    //找到<-方向上最后一个大于右侧最小值的元素
    if (nums[i] > min) {
      left = i
    } else {//当前元素小于最小值，更新最小值
      min = nums[i]
    }
  }

  //返回结果
  return right - left + 1
};